package com.heima.zuoye.day08.timu4;

import java.io.File;
import java.sql.SQLOutput;
import java.util.Scanner;

public class Demo1 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入要查找的路径(格式为*:/***)");
        String s1 = scanner.nextLine();
        System.out.println("请输入要查找的文件名称");
        String s2 = scanner.nextLine();
        File file = new File(s1);
        System.out.println(cc(file, s2));

    }

    /*public static String cc(File f, String s2) {
        File[] files = f.listFiles();
        String str1;
        for (File file : files) {
            if (file.isFile()) {
                String name = file.getName();
                if (name.equals(s2)) {
//                     + file.length() + file.getAbsolutePath());
                    str1 = file.getName();
                    return str1;
                }
                if (file.length() == 0) {
                    return str1 = "当前路径下没有找到该文件";
                }
            } else {
                cc(file, s2);
            }
        }
        return str1 = "当前路径下没有找到该文件";
    }*/

    /*public static void cc(File f, String s2) {
        File[] files = f.listFiles();
        if (files == null) {
            System.out.println();
            return;
        }
        for (File file : files) {
            String name = file.getName();
            if (name.equals(s2)) {
                System.out.println("文件名为" + file.getName() + "大小" + file.length() + "路径是" + file.getAbsolutePath());
                return;
            } else {
                cc(file, s2);
            }
        }
    }*/

    /**
     * 在指定目录及其子目录中查找与给定名称匹配的文件信息
     * 如果找到匹配的文件，则返回该文件的信息字符串，包括文件名、长度和绝对路径
     * 如果没有找到匹配的文件，则返回"没有找到文件"
     *
     * @param f  要搜索的目录或文件
     * @param s2 要查找的文件名
     * @return 匹配文件的信息字符串，或"没有找到文件"
     */
    public static String cc(File f, String s2) {
        // 检查传入的File对象是否为null，如果是，则返回null
        if (f == null) {
            return null;
        }
        // 获取目录下的所有文件和子目录
        File[] files = f.listFiles();
        // 如果目录为空，则返回null
        if (files == null) {
            return null;
        }
        // 遍历目录下的所有文件和子目录
        for (File file : files) {
            // 如果是文件且名称匹配，则拼接文件信息并返回
            if (file.isFile() && file.getName().equals(s2)) {
                String s = file.getName() + file.length() + file.getAbsolutePath();
                return s;
            } else if (file.isDirectory()) {
                // 如果是目录，则递归查找
                String str = cc(file, s2);
                // 如果在子目录中找到了匹配的文件，则返回该文件的信息字符串
                if (str != null) {
                    return str;
                }
            }
        }
        // 如果没有找到匹配的文件，则返回"没有找到文件"
        return "没有找到文件";
    }
}
